package cn.iocoder.yudao.module.trade.controller.admin.depositorderreturn.vo;

import cn.iocoder.yudao.module.trade.controller.admin.depositorderreturnlog.vo.DepositOrderReturnLogRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 押金单退瓶 Response VO")
@Data
@ExcelIgnoreUnannotated
public class DepositOrderReturnRespVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17352")
    @ExcelProperty("id")
    private Long id;

    @Schema(description = "单据单号")
    @ExcelProperty("单据单号")
    private String code;

    @Schema(description = "燃气户id", example = "21330")
    @ExcelProperty("燃气户id")
    private Long crmGasUserId;

    @Schema(description = "押金单id", example = "12917")
    @ExcelProperty("押金单id")
    private Long depositId;

    @Schema(description = "押金总瓶数")
    @ExcelProperty("押金总瓶数")
    private Integer steelCylinderTotal;

    @Schema(description = "退瓶数量", example = "8819")
    @ExcelProperty("退瓶数量")
    private Integer bottleReturnCount;
    @Schema(description = "已退瓶数量", example = "8819")
    @ExcelProperty("已退瓶数量")
    private Integer bottleReturned;

    @Schema(description = "已扫描退瓶数量", example = "6545")
    @ExcelProperty("已扫描退瓶数量")
    private Integer scanBottleReturnCount;

    @Schema(description = "押金内容")
    @ExcelProperty("押金内容")
    private String depositContent;

    @Schema(description = "应退金额")
    @ExcelProperty("应退金额")
    private BigDecimal refundableAmount;

    @Schema(description = "实际退款金额")
    @ExcelProperty("实际退款金额")
    private BigDecimal actuaRefundAmount;

    @Schema(description = "退瓶原因")
    @ExcelProperty("退瓶原因")
    private String reasonBottleReturn;

    @Schema(description = "总押金")
    @ExcelProperty("总押金")
    private BigDecimal totalDeposit;

    @Schema(description = "待缴租金", example = "18660")
    @ExcelProperty("待缴租金")
    private Long rentPaid;

    @Schema(description = "部门id", example = "17150")
    @ExcelProperty("部门id")
    private Long deptId;

    @Schema(description = "部门名称", example = "17150")
    @ExcelProperty("部门名称")
    private String deptName;

    @Schema(description = "确认人", example = "10967")
    @ExcelProperty("确认人")
    private Long confirmId;
    @Schema(description = "确认人")
    private String confirmName;

    @Schema(description = "创建人")
    private String creator;
    /**
     *  确认时间
     */
    @Schema(description = "确认时间")
    private LocalDateTime confirmTime;

    @Schema(description = "退瓶单附件", example = "https://www.iocoder.cn")
    @ExcelProperty("退瓶单附件")
    private String imageUrl;

    @Schema(description = "退瓶单状态0待确认1已确认", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("退瓶单状态0待确认1已确认")
    private Integer status;

    @Schema(description = "备注", example = "随便")
    @ExcelProperty("备注")
    private String remark;
    @Schema(description = "押金备注", example = "随便")
    @ExcelProperty("押金备注")
    private String desipotRemark;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;
    @Schema(description = "户号", example = "")
    private String crmCode;
    @Schema(description = "燃气户名称", example = "")
    private String crmName;
    @Schema(description = "燃气户手机号", example = "")
    private String crmMobile;
    @Schema(description = "燃气户详情地址", example = "")
    private String crmAddress;
    @Schema(description = "钢瓶规格")
    private List<String> cylinderCode;

    @Schema(description = "剩余数量")
    private Integer residueCount;
    @Schema(description = "退押金额")
    private BigDecimal refundAmount;

    @Schema(description = "结算金额")
    private BigDecimal settlementAmount;

    @Schema(description = "退瓶记录详情")
    private List<DepositOrderReturnLogRespVO> returnLogList;

    /**
     *  起租时间和结束时间
     */
    private LocalDateTime startTime;
    private LocalDateTime endTime;

    private String depositCode;

    private String submitName;
}